/**
 * jims
 */
package com.jims.master.modules.orders.dao;

import com.jims.master.common.persistence.CrudDao;
import com.jims.master.common.persistence.annotation.MyBatisDao;
import com.jims.master.common.web.impl.BaseDto;
import com.jims.master.modules.orders.entity.Orders;
import com.jims.master.modules.orders.vo.CountDrug;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 遗嘱DAO接口
 *
 * @author 陈晓阳
 * @version 2017-03-27
 */
@MyBatisDao
public interface OrdersDao extends CrudDao<Orders> {
    /**
     * 根据父遗嘱Ids查询子医嘱Ids
     *
     * @param ids
     * @return
     */
    public List<String> findChildIdsByPId(@Param("ids") List<String> ids);

    /**
     * 根据父遗嘱Id查询子医嘱
     *
     * @param parentId
     * @return
     */
    public List<Orders> findByPid(@Param("parentId") String parentId);

    /**
     * 医嘱药品自动补全
     *
     * @param q
     * @param limit
     * @param orgId
     * @return
     */
    public List<BaseDto> findListByParam(@Param("q") String q, @Param("limit") String limit, @Param("orgId") String orgId);

    /**
     * 护士段查询医嘱信息
     *
     * @param orders
     * @return
     */
    public List<Orders> findNurseOrders(Orders orders);

    /**
     * 跟新遗嘱开始时间
     *
     * @param resultIds
     * @return
     */
    public int updateOrderStartDate(@Param("ids") List<String> resultIds, @Param("startDate") Date date);

    /**
     * 查询当前病区摆药医嘱
     *
     * @param wardCode
     * @param visitNo
     * @param storageId
     * @param orgId
     * @return
     */
    public List<Orders> findDispOrders(@Param("wardCode") String wardCode, @Param("visitNo") String visitNo, @Param("storageId") String storageId, @Param("orgId") String orgId, @Param("days") Integer days,@Param("bedNos") String[] bedNos,@Param("administrationes") String[] administrationes,@Param("startBedNo") String startBedNo,@Param("endBedNo") String endBedNo,@Param("time") String time);

    /**
     * 根据药品统计
     *
     * @param wardCode
     * @param visitNo
     * @param storageId
     * @param orgId
     * @return
     */
    public List<CountDrug> countByDrug(@Param("wardCode") String wardCode, @Param("visitNo") String visitNo, @Param("storageId") String storageId, @Param("orgId") String orgId,@Param("bedNos") String[] bedNos,@Param("administrationes") String[] administrationes,@Param("startBedNo") String startBedNo,@Param("endBedNo") String endBedNo);

    /**
     * 摆药保存
     *
     * @param map
     */
    public String dispSave(Map<String, Object> map);

    /**
     * 执行单查询医嘱
     * @param visitId
     * @return
     * @author 赵宁
     */
    public List<Orders> getPerformOrders(@Param("visitId")String visitId,@Param("type")String type);

    /**
     * 执行单打印
     * @param visitId
     * @return
     * @author CTQ
     */
    public List<BaseDto> printPerformDrug(@Param("visitId")String visitId,@Param("type")String type);

    /**
     * 删除医嘱
     * @param id
     * @return
     */
    public int deletePreAndOrder(@Param("id")String id);

    /**
     * 非药品
     * @param q
     * @param limit
     * @param orgId
     * @return
     */
    public List<BaseDto> automaticClinic(@Param("q") String q, @Param("limit") String limit, @Param("orgId") String orgId);

    /**
     * 查询未校对的医嘱
     * @param patientId
     * @param visitId
     * @return
     */
    public Integer sumCheckOrders(@Param("patientId") String patientId,@Param("visitId") String visitId);

    /**
     * 护理端查询医嘱瓶签信息
     * @param orders
     * @return
     * @author CTQ
     */
    public List<Orders> findOrdersBottleLabel(Orders orders);
    /**
     * 护理端查询医嘱瓶签
     * @param orders
     * @return
     * @author CTQ
     */
    public List<BaseDto> findListLabel(Orders orders);
    /**
     * 护理端-医嘱瓶签信息-打印
     * @param orders
     * @return
     * @author CTQ
     */
    public List<BaseDto> findByOrdersId(Orders orders);

    public Integer delPreDis(@Param("id") String id);

    /**
     * 费用核对，查询 医嘱信息
     * @param orders
     * @return
     * @author 赵宁
     */
    public List<Orders> findOrdersCheckCosts(Orders orders);
    /**
     * 护理端-执行单
     * @param patientId
     * @param visitId
     * @return
     * @author CTQ
     */
    public List<BaseDto> printExeuteReportByStartDateTime(@Param("patientId") String patientId,@Param("visitId") String visitId, @Param("type") String type);

    /**
     * 护理端-执行单-治疗单打印
     * @param patientId
     * @param visitId
     * @return
     * @author CTQ
     */
    public List<BaseDto> printTreatmentReport(@Param("patientId") String patientId,@Param("visitId") String visitId);
    /**
     * 护理端-医嘱信息-打印查询
     * @param orders
     * @return
     * @author CTQ
     */
    public List<BaseDto> getDoctorOrdersPrint(Orders orders);

    /**
     * 根据申请主表查询医嘱信息
     * @param orders
     * @return Orders
     * @author 赵宁
     */
    public List<Orders> getOrders(Orders orders);

    /**
     * 根据条件查询医嘱
     * @param orders
     * @return
     * @author 	xueliang
     */
    public List<BaseDto> finddoctoradvise(Orders orders);

    /**医嘱记录打印单
     *
     * @param orders
     * @return
     */
    public List<BaseDto> temporaryMedicalLabelPrint(Orders orders);


    public List<BaseDto> findByUser(@Param("category") String category,@Param("continue1") String continue1,@Param("valuation") String valuation);

    /**
     * 申请单退费申请
     * @param delFlag
     * @param applyId
     * @return
     */
    public int inpRetCharge(@Param("delFlag") String delFlag,@Param("applyId") String applyId);


}